High availability devices, such as service routers, may be grouped into an active-active service router cluster. The service routers (“SRs”) in the cluster may work as a team to provide services even if some of the routers in the cluster fail. As long as at least one of the SRs remains active, the cluster may provide the services configured on the SRs. Examples of the services may include load balancing, traffic forwarding, data packet processing, VPN services, DNS services, and the like.
Health of a SR is usually measured by the router's ability to provide the services configured on the router. Information about the health of the routers in a cluster may be exchanged between the routers to allow the active routers to detect the routers that have failed. If some routers in the cluster fail, then some of the surviving active routers need to assume the responsibility for providing the services that were configured on the failed routers.
Unfortunately, determining which surviving SRs should assume responsibilities for providing services that were configured on a failed router is usually difficult and time consuming. For example, if all but two SRs fail in a multi-SR cluster, then none of the two surviving SRs should become solely responsible for all services that were configured on the failed SRs. Therefore, it is desirable to develop an improved method for distributing the services that were configured on the failed SRs to the surviving SRs.